package com.tebiecloud.common.security;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

import java.util.Collection;
import java.util.Map;

/**
 * 自定义认证用户信息
 * @Author: tebie
 * @Date: 2019-07-12 10:04
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SecurityUserDetails implements UserDetails {

    private static final long serialVersionUID = 1L;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 登录名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 用户权限
     */
    private Collection<? extends GrantedAuthority> authorities;

    /**
     * 是否已锁定
     */
    private boolean accountNonLocked;

    /**
     * 是否已过期
     */
    private boolean accountNonExpired;

    /**
     * 是否启用
     */
    private boolean enabled;

    /**
     * 密码是否已过期
     */
    private boolean credentialsNonExpired;

    /**
     * 认证客户端ID
     */
    private String clientId;

    /**
     * 认证中心域,适用于区分多用户源,多认证中心域
     */
    private String domain;

    /**
     * 昵称
     */
    private String nickName;

    /**
     * 头像
     */
    private String avatar;

    /**
     * 账户Id
     */
    private Long accountId;

    /**
     * 关联账户id
     */
    private Long accountRefId;

    /**
     * 账户类型
     */
    private String accountType;

    /**
     * 用户附加属性
     */
    private Map<String, Object> attrs;

}
